Using wireless network to perform data communication, especially to perform video and/or audio streaming is a prevailing application nowadays. Some wireless systems, for example WLAN, can distribute video streams from a sender to multiple receivers in a multicast area.
FIG. 1 is a diagram showing a conventional multicast wireless system. The system is used to transmit video streams from at least one sender 10 to multiple receivers 20. Video packets are generated by a video server (not shown in FIG. 1) at the sender and are transmitted to the receivers. When the receivers receive the video packets, they decode these video packets. If packet loss occurs in received video packets at a receiver, the decoder at the receiver will not be able to decode the video packets. Thus some error correction methods are needed. Forward Error Correction (FEC) and Automatic Repeat Request (ARQ) are two basic error correction methods.
Forward Error Correction (FEC) is a method with some redundant packets being sent to a receiver besides the source data packets, so that the packet loss can be recovered by the redundant packets at the receiver. In a kind of FEC methods, some proactive repairs (redundant packets) are included in a stream of data packets. The proactive repairs are sent before it is known whether the transmission of the repairs is necessary. In FEC, the packet sender introduces N-K repairs for every K source packets to make N packets. When the receiver receives at least K out of the N packets, it can recover all the K source packets. In FEC method, the number of lost source packets has to be compensated by the receipt of at least the same number of repairs in order to recover all of the source packets.
If the repairs are insufficient to reliably decode the source data at a receiver, the receiver will make a request for retransmission of additional repairs. This request is called Automatic Repeat Request (ARQ). The ARQs are continuously made until the data packets are decoded successfully.
A combination of FEC and ARQ, named hybrid FEC/ARQ method, has been extensively studied in the past decades. An example is shown in “A Study of Proactive Hybrid FEC/ARQ and Scalable Feedback Techniques for Reliable, Real-Time Multicast, which appears in Computer Communication, March 2001, written by Dan Rubenstein et al. The paper discloses a hybrid FEC/ARQ method used in multicast network, in which the sender chooses a proactivity factor to adjust the proactive repairs according to network conditions. If the sender is being heavily inundated with feedback, then it should increase the proactivity factor to add more proactive repairs. If the sender is receiving little feedback, then it should reduce the proactivity factor to reduce the number of the proactive repairs.
Each ARQ/NAK ((i.e. Negative Acknowledgement, notifying the sender of a packet loss), ARQ is an equivalent of NAK) from a receiver contains the number of repairs nr that the receiver requires for transmission, as well as a NAK round, Nr. The NAK round indicates the current “round” of the block transmission as perceived by the receiver. When the sender transmits repairs, a NAK round number, N8, is contained in its packet, corresponding to the largest NAK round it has received from any receiver for that block.
Three ways can be used by the sender to respond to a NAK requesting nr repairs that has just arrived with round number Nr from the receiver. One of the methods used by the sender to respond to a NAK from a client is called round-current. In this method, the sender maintains a count, n, of the total number of repairs transmitted whose round number equals the current sender round number, Ns. For the arriving NAK, if Nr<Ns, then the NAK is ignored. If Nr=Ns, max(0, nr-n) packets are transmitted, and n is set to max(n, nr). If Nr>Ns, n is set to nr, Ns=Nr, and nr packets are transmitted.
A receiver's NAK round number, Nr, is initially 1. After sending a NAK, it increments its NAK counter by 1, Nr=Nr+1, for example. Upon receiving a packet from the sender with a NAK round number larger than or equal to its own current value, the receiver updates its NAK round number to the sender's current value plus one (if Ns≧Nr, let Nr=Ns+1).
However, as shown in the paper, some redundant requests are sent unnecessarily in the above method. For example, when there are two receivers, A and B, in which receiver A has a smaller round trip time than that of receiver B. When both receivers send NAKs with round number 1, with B requesting nb repairs and A requesting a smaller number of repairs na. Assume that the sender gets the request for na repairs first, and multicasts out na repairs. If some of these repairs are lost on the path to receiver A, then A will request an additional repairs with round number 2, prior to the arrival (or its knowledge) of the nb-na additional repairs being transmitted with round number 1. Hence, the repairs requested in round 2 are redundant when nb-na repairs can recover the remaining lost packets, but because the round number in the NAK is larger, all packets are transmitted.
In addition, in this method, all receivers are coordinated by the NAK round number Ns and the repairs information from the sender. If a receiver sends its request with a round number and the number of repairs needed, other receivers won't know this information until the procedure from the receiver to the sender and then from the sender to them finishes. Since this procedure takes quite a lot of time, some senders may not get the information sent by other receivers timely and may send some redundant requests.